#! /usr/bin/env python
# -*- coding: utf-8 -*-
"""
@File Name: 网络服务器_webserver.py
@Author: LTisme
@Date: 2021/9/5 15:40
# -----------------------------------------------------------------------------------------------------
@Description: 
这个服务器：
· 在运行它的计算机上，脚本或命令行中指定的port进行监听，探查客户端传来的套接字请求（默认为标准HTTP端口，即端口80）.
· 提供脚本或命令行里指定的Webdir目录中（即默认为启动时所在目录）
· 运行位于webdir目录的cgi-bin（或者htbin）子目录的Python CGI脚本，这类脚本带有.py文件扩展名


Python的http库知道如何提供HTTP页面和运行用Python编写的服务器端CGI脚本。
本脚本肯定不能是一个产品级的服务器（例如，它没有HTTPS，在某些平台上脚本启动/运行速度缓慢），但能满足测试需要，尤其是在localhost上。

默认提供当前工作目录下的文件和脚本，端口号为80，除非在命令行参数中指定了这些选项；
Python CGI脚本必须存放在 webdir\cgi-bin或者webdir\htbin路径下；
同一台机器上可以运行多个服务器，提供多个目录下的页面和脚本，只需要监听不同的端口即可。
# -----------------------------------------------------------------------------------------------------
"""
import os, sys
from http.server import HTTPServer, CGIHTTPRequestHandler

webdir = '.'                                            # HTML文件和cgi-bin脚本目录所在之处
port = 80                                               # 如果是80，则使用http://servername/，否则使用http://servername:port/

if len(sys.argv) > 1:
    webdir = sys.argv[1]
if len(sys.argv) > 2:
    port = int(sys.argv[2])
print(f"webdir is {webdir}, port is {port}")

os.chdir(webdir)                                        # 在HTML根目录下运行
srvaddr = ("", port)                                    # 托管服务器名称（空则默认为本机），端口号
srvobj = HTTPServer(srvaddr, CGIHTTPRequestHandler)     # 实例化HTTP服务器对象
srvobj.serve_forever()                                  # 服务器开始服务（假设永久服务）


if __name__ == '__main__':
    pass
